package qdu.my.ch1_intent_extra;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        findViewById(R.id.btn_send).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				String msg = "Test string";
				Intent it = new Intent(MainActivity.this, NextAct.class);
				it.putExtra("msg", 
						(msg =((EditText)findViewById(R.id.Etxt_msg)).getText().toString().trim())== ""?"Test string":msg
				);
				it.putExtra("names",12.5);
				startActivity(it);
				
			}
		});
        
        ((Button)findViewById(R.id.btnchoose)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(MainActivity.this,Image_act.class);
                startActivityForResult(it,0x123);
            }
        });
        //*****************************styles*************************
        //资源访问得到原始字符串
        String send_code = this.getString(R.string.send_intent_code);
        //SpannableString字符串文本格式（字体、颜色、字号等）工具
        SpannableString spstr = new SpannableString(send_code);
        //ForegroundColorSpan前景颜色，构造函数传入颜色对象
        ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#0099EE"));
        //调用格式工具对象的setSpan函数来设置格式
        //参数1：格式对象，   参数2、3：决定了在文本中格式作用的范围，值下表
        // 参数4：在处理格式时，如果在原字符串中的字符序列有变动，变动的内容与参数2、3确定的范围如何作用
        spstr.setSpan(colorSpan, 0, spstr.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        spstr.setSpan(new UnderlineSpan(), send_code.indexOf("(Main"),send_code.indexOf(";") ,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        spstr.setSpan(new BackgroundColorSpan(Color.parseColor("#006600"))
                    ,send_code.indexOf("2/"), send_code.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //获取UI引用，然后将文本setText到文本框
        TextView sendcode = (TextView)findViewById(R.id.txtv_sendcode);
        sendcode.setText(spstr);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 0x123 && resultCode == 0x123)
        {
            Bundle bd = data.getExtras();
            int imgid = bd.getInt("imgid");
            ImageView img = (ImageView)findViewById(R.id.imgicon);
            img.setImageResource(imgid);
        }
    }
    /**
     * intent携带数据返回
     * 1）在起点界面需要调用startActivityForResult发起跳转，这样onActivityResult的回调才有意义
     *    startActivityForResult 参数1：   参数2：
     * 2）在终点界面调用 setResult函数，该函数可以设置当前activity销毁后对应的返回码（resultcode 默认为0）
     *    参数1：    参数2：携带数据的intent对象，该intent对象不进行匹配
     * 3）在起点界面重写onActivityResult（回调函数）,回调时系统会根据触发的情况传入该状态下对应的请求码和返回码
     *    参数1、2  返回的请求码和返回码，一般需要经过判断来确定当前状态与即将进行的数据操作符合
     *    参数3 在setresult中设置的携带数据的intent对象
     */
}
